home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-06-08 | 46.7 KB | 2,337 lines |
- #define EXTERN extern
- #include "texd.h"
-
- println () {
- println_regmem
- switch ( selector )
- {case 19 :
- {
- (void) putc('\n', stdout );
- (void) putc('\n', logfile );
- termoffset = 0 ;
- fileoffset = 0 ;
- }
- break ;
- case 18 :
- {
- (void) putc('\n', logfile );
- fileoffset = 0 ;
- }
- break ;
- case 17 :
- {
- (void) putc('\n', stdout );
- termoffset = 0 ;
- }
- break ;
- case 16 :
- case 20 :
- case 21 :
- ;
- break ;
- default:
- (void) putc('\n', writefile [ selector ] );
- break ;
- }
- }
- zprintchar ( s )
- ASCIIcode s ;
- {/* 10 */ printchar_regmem
- if ( s == eqtb [ 5316 ] .cint )
- if ( selector < 20 )
- {
- println () ;
- return ;
- }
- switch ( selector )
- {case 19 :
- {
- (void) putc( Xchr ( s ) , stdout );
- (void) putc( Xchr ( s ) , logfile );
- incr ( termoffset ) ;
- incr ( fileoffset ) ;
- if ( termoffset == maxprintline )
- {
- (void) putc('\n', stdout );
- termoffset = 0 ;
- }
- if ( fileoffset == maxprintline )
- {
- (void) putc('\n', logfile );
- fileoffset = 0 ;
- }
- }
- break ;
- case 18 :
- {
- (void) putc( Xchr ( s ) , logfile );
- incr ( fileoffset ) ;
- if ( fileoffset == maxprintline )
- println () ;
- }
- break ;
- case 17 :
- {
- (void) putc( Xchr ( s ) , stdout );
- incr ( termoffset ) ;
- if ( termoffset == maxprintline )
- println () ;
- }
- break ;
- case 16 :
- ;
- break ;
- case 20 :
- if ( tally < trickcount )
- trickbuf [ tally % errorline ] = s ;
- break ;
- case 21 :
- {
- if ( poolptr < poolsize )
- {
- strpool [ poolptr ] = s ;
- incr ( poolptr ) ;
- }
- }
- break ;
- default:
- (void) putc( Xchr ( s ) , writefile [ selector ] );
- break ;
- }
- incr ( tally ) ;
- }
- zprint ( s )
- integer s ;
- {/* 10 */ print_regmem
- poolpointer j ;
- if ( s >= strptr )
- s = 130 ;
- else if ( s < 128 )
- if ( s < 0 )
- s = 130 ;
- else if ( ( s == eqtb [ 5316 ] .cint ) )
- if ( selector < 20 )
- {
- println () ;
- return ;
- }
- j = strstart [ s ] ;
- while ( j < strstart [ s + 1 ] ) {
-
- printchar ( strpool [ j ] ) ;
- incr ( j ) ;
- }
- }
- zslowprint ( s )
- integer s ;
- {/* 10 */ slowprint_regmem
- poolpointer j ;
- if ( s >= strptr )
- s = 130 ;
- else if ( s < 128 )
- if ( s < 0 )
- s = 130 ;
- else if ( ( s == eqtb [ 5316 ] .cint ) )
- if ( selector < 20 )
- {
- println () ;
- return ;
- }
- j = strstart [ s ] ;
- while ( j < strstart [ s + 1 ] ) {
-
- print ( strpool [ j ] ) ;
- incr ( j ) ;
- }
- }
- zprintnl ( s )
- strnumber s ;
- {printnl_regmem
- if ( ( ( termoffset > 0 ) && ( odd ( selector ) ) ) || ( ( fileoffset > 0 )
- && ( selector >= 18 ) ) )
- println () ;
- print ( s ) ;
- }
- zprintesc ( s )
- strnumber s ;
- {printesc_regmem
- integer c ;
- c = eqtb [ 5312 ] .cint ;
- if ( c >= 0 )
- if ( c < 128 )
- print ( c ) ;
- print ( s ) ;
- }
- zprintthedigs ( k )
- eightbits k ;
- {printthedigs_regmem
- while ( k > 0 ) {
-
- decr ( k ) ;
- if ( dig [ k ] < 10 )
- printchar ( 48 + dig [ k ] ) ;
- else printchar ( 55 + dig [ k ] ) ;
- }
- }
- zprintint ( n )
- integer n ;
- {printint_regmem
- schar k ;
- integer m ;
- k = 0 ;
- if ( n < 0 )
- {
- printchar ( 45 ) ;
- if ( n > -100000000L )
- n = - (integer) n ;
- else {
-
- m = -1 - n ;
- n = m / 10 ;
- m = ( m % 10 ) + 1 ;
- k = 1 ;
- if ( m < 10 )
- dig [ 0 ] = m ;
- else {
-
- dig [ 0 ] = 0 ;
- incr ( n ) ;
- }
- }
- }
- do {
- dig [ k ] = n % 10 ;
- n = n / 10 ;
- incr ( k ) ;
- } while ( ! ( n == 0 ) ) ;
- printthedigs ( k ) ;
- }
- zprintcs ( p )
- integer p ;
- {printcs_regmem
- if ( p < 258 )
- if ( p >= 129 )
- if ( p == 257 )
- {
- printesc ( 363 ) ;
- printesc ( 364 ) ;
- }
- else {
-
- printesc ( p - 129 ) ;
- if ( eqtb [ 4627 + p - 129 ] .hh .v.RH == 11 )
- printchar ( 32 ) ;
- }
- else if ( p < 1 )
- printesc ( 365 ) ;
- else print ( p - 1 ) ;
- else if ( p >= 3525 )
- printesc ( 365 ) ;
- else if ( ( hash [ p ] .v.RH >= strptr ) )
- printesc ( 366 ) ;
- else {
-
- printesc ( 206 ) ;
- slowprint ( hash [ p ] .v.RH ) ;
- printchar ( 32 ) ;
- }
- }
- zsprintcs ( p )
- halfword p ;
- {sprintcs_regmem
- if ( p < 258 )
- if ( p < 129 )
- print ( p - 1 ) ;
- else if ( p < 257 )
- printesc ( p - 129 ) ;
- else {
-
- printesc ( 363 ) ;
- printesc ( 364 ) ;
- }
- else {
-
- printesc ( 206 ) ;
- slowprint ( hash [ p ] .v.RH ) ;
- }
- }
- zprintfilename ( n , a , e )
- integer n , a , e ;
- {printfilename_regmem
- print ( a ) ;
- print ( n ) ;
- print ( e ) ;
- }
- zprintsize ( s )
- integer s ;
- {printsize_regmem
- if ( s == 0 )
- printesc ( 277 ) ;
- else if ( s == 16 )
- printesc ( 278 ) ;
- else printesc ( 279 ) ;
- }
- zprintwritewhatsit ( s , p )
- strnumber s ;
- halfword p ;
- {printwritewhatsit_regmem
- printesc ( s ) ;
- if ( mem [ p + 1 ] .hh .v.LH < 16 )
- printint ( mem [ p + 1 ] .hh .v.LH ) ;
- else if ( mem [ p + 1 ] .hh .v.LH == 16 )
- printchar ( 42 ) ;
- else printchar ( 45 ) ;
- }
- #ifdef DEBUG
- #endif /* DEBUG */
- jumpout () {
- jumpout_regmem
- closefilesandtermina () ;
- {
- termflush ( stdout ) ;
- readyalready = 0 ;
- if ( ( history != 0 ) && ( history != 1 ) ) {
- uexit ( 1 ) ;
- } else {
- uexit ( 0 ) ;
- }
- }
- }
- error () {
- /* 22 10 */ error_regmem
- ASCIIcode c ;
- integer s1, s2, s3, s4 ;
- if ( history < 2 )
- history = 2 ;
- printchar ( 46 ) ;
- showcontext () ;
- if ( interaction == 3 )
- while ( true ) {
-
- lab22: clearforerrorprompt () ;
- {
- wakeupterminal () ;
- print ( 135 ) ;
- terminput () ;
- }
- if ( last == first )
- return ;
- c = buffer [ first ] ;
- if ( c >= 97 )
- c = c - 32 ;
- switch ( c )
- {case 48 :
- case 49 :
- case 50 :
- case 51 :
- case 52 :
- case 53 :
- case 54 :
- case 55 :
- case 56 :
- case 57 :
- if ( deletionsallowed )
- {
- s1 = curtok ;
- s2 = curcmd ;
- s3 = curchr ;
- s4 = alignstate ;
- alignstate = 1000000L ;
- OKtointerrupt = false ;
- if ( ( last > first + 1 ) && ( buffer [ first + 1 ] >= 48 ) && (
- buffer [ first + 1 ] <= 57 ) )
- c = c * 10 + buffer [ first + 1 ] - 48 * 11 ;
- else c = c - 48 ;
- while ( c > 0 ) {
-
- gettoken () ;
- decr ( c ) ;
- }
- curtok = s1 ;
- curcmd = s2 ;
- curchr = s3 ;
- alignstate = s4 ;
- OKtointerrupt = true ;
- {
- helpptr = 2 ;
- helpline [ 1 ] = 148 ;
- helpline [ 0 ] = 149 ;
- }
- showcontext () ;
- goto lab22 ;
- }
- break ;
- ;
- #ifdef DEBUG
- case 68 :
- {
- debughelp () ;
- goto lab22 ;
- }
- break ;
- #endif /* DEBUG */
- case 69 :
- if ( baseptr > 0 )
- {
- editnamestart = strstart [ inputstack [ baseptr ] .namefield ] ;
- editnamelength = strstart [ inputstack [ baseptr ] .namefield + 1 ] -
- strstart [ inputstack [ baseptr ] .namefield ] ;
- editline = line ;
- jumpout () ;
- }
- break ;
- case 72 :
- {
- if ( useerrhelp )
- {
- giveerrhelp () ;
- useerrhelp = false ;
- }
- else {
-
- if ( helpptr == 0 )
- {
- helpptr = 2 ;
- helpline [ 1 ] = 150 ;
- helpline [ 0 ] = 151 ;
- }
- do {
- decr ( helpptr ) ;
- print ( helpline [ helpptr ] ) ;
- println () ;
- } while ( ! ( helpptr == 0 ) ) ;
- }
- {
- helpptr = 4 ;
- helpline [ 3 ] = 152 ;
- helpline [ 2 ] = 151 ;
- helpline [ 1 ] = 153 ;
- helpline [ 0 ] = 154 ;
- }
- goto lab22 ;
- }
- break ;
- case 73 :
- {
- beginfilereading () ;
- if ( last > first + 1 )
- {
- curinput .locfield = first + 1 ;
- buffer [ first ] = 32 ;
- }
- else {
-
- {
- wakeupterminal () ;
- print ( 147 ) ;
- terminput () ;
- }
- curinput .locfield = first ;
- }
- first = last ;
- curinput .limitfield = last - 1 ;
- return ;
- }
- break ;
- case 81 :
- case 82 :
- case 83 :
- {
- errorcount = 0 ;
- interaction = 0 + c - 81 ;
- print ( 142 ) ;
- switch ( c )
- {case 81 :
- {
- printesc ( 143 ) ;
- decr ( selector ) ;
- }
- break ;
- case 82 :
- printesc ( 144 ) ;
- break ;
- case 83 :
- printesc ( 145 ) ;
- break ;
- }
- print ( 146 ) ;
- println () ;
- termflush ( stdout ) ;
- return ;
- }
- break ;
- case 88 :
- {
- interaction = 2 ;
- jumpout () ;
- }
- break ;
- default:
- ;
- break ;
- }
- {
- print ( 136 ) ;
- printnl ( 137 ) ;
- printnl ( 138 ) ;
- if ( baseptr > 0 )
- print ( 139 ) ;
- if ( deletionsallowed )
- printnl ( 140 ) ;
- printnl ( 141 ) ;
- }
- }
- incr ( errorcount ) ;
- if ( errorcount == 100 )
- {
- printnl ( 134 ) ;
- history = 3 ;
- jumpout () ;
- }
- if ( interaction > 0 )
- decr ( selector ) ;
- if ( useerrhelp )
- {
- println () ;
- giveerrhelp () ;
- }
- else while ( helpptr > 0 ) {
-
- decr ( helpptr ) ;
- printnl ( helpline [ helpptr ] ) ;
- }
- println () ;
- if ( interaction > 0 )
- incr ( selector ) ;
- println () ;
- }
- zfatalerror ( s )
- strnumber s ;
- {fatalerror_regmem
- normalizeselector () ;
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 156 ) ;
- }
- {
- helpptr = 1 ;
- helpline [ 0 ] = s ;
- }
- {
- if ( interaction == 3 )
- interaction = 2 ;
- error () ;
- ;
- #ifdef DEBUG
- if ( interaction > 0 )
- debughelp () ;
- #endif /* DEBUG */
- history = 3 ;
- jumpout () ;
- }
- }
- zoverflow ( s , n )
- strnumber s ;
- integer n ;
- {overflow_regmem
- normalizeselector () ;
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 157 ) ;
- }
- print ( s ) ;
- printchar ( 61 ) ;
- printint ( n ) ;
- printchar ( 93 ) ;
- {
- helpptr = 2 ;
- helpline [ 1 ] = 158 ;
- helpline [ 0 ] = 159 ;
- }
- {
- if ( interaction == 3 )
- interaction = 2 ;
- error () ;
- ;
- #ifdef DEBUG
- if ( interaction > 0 )
- debughelp () ;
- #endif /* DEBUG */
- history = 3 ;
- jumpout () ;
- }
- }
- zconfusion ( s )
- strnumber s ;
- {confusion_regmem
- normalizeselector () ;
- if ( history < 2 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 160 ) ;
- }
- print ( s ) ;
- printchar ( 41 ) ;
- {
- helpptr = 1 ;
- helpline [ 0 ] = 161 ;
- }
- }
- else {
-
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 162 ) ;
- }
- {
- helpptr = 2 ;
- helpline [ 1 ] = 163 ;
- helpline [ 0 ] = 164 ;
- }
- }
- {
- if ( interaction == 3 )
- interaction = 2 ;
- error () ;
- ;
- #ifdef DEBUG
- if ( interaction > 0 )
- debughelp () ;
- #endif /* DEBUG */
- history = 3 ;
- jumpout () ;
- }
- }
- boolean initterminal () {
- /* 10 */ register boolean Result;
- initterminal_regmem
- topenin () ;
- if ( last > first )
- {
- curinput .locfield = first ;
- while ( ( curinput .locfield < last ) && ( buffer [ curinput .locfield ]
- == ' ' ) ) incr ( curinput .locfield ) ;
- if ( curinput .locfield < last )
- {
- Result = true ;
- return(Result) ;
- }
- }
- while ( true ) {
-
- wakeupterminal () ;
- #ifdef RISC_OS
- (void) Fput( stdout , "**" ) ;
- #else
- (void) Fputs( stdout , "**" ) ;
- #endif
- termflush ( stdout ) ;
- if ( ! inputln ( stdin , true ) )
- {
- (void) putc('\n', stdout );
- (void) Fputs( stdout , "! End of file on the terminal... why?" ) ;
- Result = false ;
- return(Result) ;
- }
- curinput .locfield = first ;
- while ( ( curinput .locfield < last ) && ( buffer [ curinput .locfield ]
- == 32 ) ) incr ( curinput .locfield ) ;
- if ( curinput .locfield < last )
- {
- Result = true ;
- return(Result) ;
- }
- #ifdef RISC_OS
- /* Don't know why they didn't do this in the first place... */
- (void) Fputs( stdout , "Please type the name of your input file." ) ;
- /* Actually, stderr */
- #else
- (void) fprintf( stdout , "%s\n", "Please type the name of your input file." ) ;
- #endif
- }
- return(Result) ;
- }
- strnumber makestring () {
- register strnumber Result; makestring_regmem
- if ( strptr == maxstrings )
- overflow ( 129 , maxstrings - initstrptr ) ;
- incr ( strptr ) ;
- strstart [ strptr ] = poolptr ;
- Result = strptr - 1 ;
- return(Result) ;
- }
- boolean zstreqbuf ( s , k )
- strnumber s ;
- integer k ;
- {/* 45 */ register boolean Result; streqbuf_regmem
- poolpointer j ;
- boolean result ;
- j = strstart [ s ] ;
- while ( j < strstart [ s + 1 ] ) {
-
- if ( strpool [ j ] != buffer [ k ] )
- {
- result = false ;
- goto lab45 ;
- }
- incr ( j ) ;
- incr ( k ) ;
- }
- result = true ;
- lab45: Result = result ;
- return(Result) ;
- }
- boolean zstreqstr ( s , t )
- strnumber s , t ;
- {/* 45 */ register boolean Result; streqstr_regmem
- poolpointer j, k ;
- boolean result ;
- result = false ;
- if ( ( strstart [ s + 1 ] - strstart [ s ] ) != ( strstart [ t + 1 ] -
- strstart [ t ] ) )
- goto lab45 ;
- j = strstart [ s ] ;
- k = strstart [ t ] ;
- while ( j < strstart [ s + 1 ] ) {
-
- if ( strpool [ j ] != strpool [ k ] )
- goto lab45 ;
- incr ( j ) ;
- incr ( k ) ;
- }
- result = true ;
- lab45: Result = result ;
- return(Result) ;
- }
- zprinttwo ( n )
- integer n ;
- {printtwo_regmem
- n = abs ( n ) % 100 ;
- printchar ( 48 + ( n / 10 ) ) ;
- printchar ( 48 + ( n % 10 ) ) ;
- }
- zprinthex ( n )
- integer n ;
- {printhex_regmem
- schar k ;
- k = 0 ;
- printchar ( 34 ) ;
- do {
- dig [ k ] = n % 16 ;
- n = n / 16 ;
- incr ( k ) ;
- } while ( ! ( n == 0 ) ) ;
- printthedigs ( k ) ;
- }
- zprintASCII ( c )
- integer c ;
- {printASCII_regmem
- if ( ( c >= 0 ) && ( c <= 127 ) )
- print ( c ) ;
- else {
-
- printchar ( 91 ) ;
- if ( c < 0 )
- printint ( c ) ;
- else printhex ( c ) ;
- printchar ( 93 ) ;
- }
- }
- zprintromanint ( n )
- integer n ;
- {/* 10 */ printromanint_regmem
- poolpointer j, k ;
- nonnegativeinteger u, v ;
- j = strstart [ 131 ] ;
- v = 1000 ;
- while ( true ) {
-
- while ( n >= v ) {
-
- printchar ( strpool [ j ] ) ;
- n = n - v ;
- }
- if ( n <= 0 )
- return ;
- k = j + 2 ;
- u = v / ( strpool [ k - 1 ] - 48 ) ;
- if ( strpool [ k - 1 ] == 50 )
- {
- k = k + 2 ;
- u = u / ( strpool [ k - 1 ] - 48 ) ;
- }
- if ( n + u >= v )
- {
- printchar ( strpool [ k ] ) ;
- n = n + u ;
- }
- else {
-
- j = j + 2 ;
- v = v / ( strpool [ j - 1 ] - 48 ) ;
- }
- }
- }
- printcurrentstring () {
- printcurrentstring_regmem
- poolpointer j ;
- j = strstart [ strptr ] ;
- while ( j < poolptr ) {
-
- printchar ( strpool [ j ] ) ;
- incr ( j ) ;
- }
- }
- terminput () {
- terminput_regmem
- integer k ;
- termflush ( stdout ) ;
- if ( ! inputln ( stdin , true ) )
- fatalerror ( 132 ) ;
- termoffset = 0 ;
- decr ( selector ) ;
- if ( last != first )
- {register integer for_end; k = first ; for_end = last - 1 ; if ( k <=
- for_end) do
- print ( buffer [ k ] ) ;
- while ( k++ < for_end ) ; }
- println () ;
- incr ( selector ) ;
- }
- zinterror ( n )
- integer n ;
- {interror_regmem
- print ( 155 ) ;
- printint ( n ) ;
- printchar ( 41 ) ;
- error () ;
- }
- normalizeselector () {
- normalizeselector_regmem
- if ( jobname > 0 )
- selector = 19 ;
- else selector = 17 ;
- if ( jobname == 0 )
- openlogfile () ;
- if ( interaction == 0 )
- decr ( selector ) ;
- }
- pauseforinstructions () {
- pauseforinstructions_regmem
- if ( OKtointerrupt )
- {
- interaction = 3 ;
- if ( ( selector == 18 ) || ( selector == 16 ) )
- incr ( selector ) ;
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 165 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 166 ;
- helpline [ 1 ] = 167 ;
- helpline [ 0 ] = 168 ;
- }
- deletionsallowed = false ;
- error () ;
- deletionsallowed = true ;
- interrupt = 0 ;
- }
- }
- integer zhalf ( x )
- integer x ;
- {register integer Result; half_regmem
- if ( odd ( x ) )
- Result = ( x + 1 ) / 2 ;
- else Result = x / 2 ;
- return(Result) ;
- }
- scaled zrounddecimals ( k )
- smallnumber k ;
- {register scaled Result; rounddecimals_regmem
- integer a ;
- a = 0 ;
- while ( k > 0 ) {
-
- decr ( k ) ;
- a = ( a + dig [ k ] * 131072L ) / 10 ;
- }
- Result = ( a + 1 ) / 2 ;
- return(Result) ;
- }
- zprintscaled ( s )
- scaled s ;
- {printscaled_regmem
- scaled delta ;
- if ( s < 0 )
- {
- printchar ( 45 ) ;
- s = - (integer) s ;
- }
- printint ( s / 65536L ) ;
- printchar ( 46 ) ;
- s = 10 * ( s % 65536L ) + 5 ;
- delta = 10 ;
- do {
- if ( delta > 65536L )
- s = s + 32768L - ( delta / 2 ) ;
- printchar ( 48 + ( s / 65536L ) ) ;
- s = 10 * ( s % 65536L ) ;
- delta = delta * 10 ;
- } while ( ! ( s <= delta ) ) ;
- }
- scaled znxplusy ( n , x , y )
- integer n ;
- scaled x , y ;
- {register scaled Result; nxplusy_regmem
- if ( n < 0 )
- {
- x = - (integer) x ;
- n = - (integer) n ;
- }
- if ( n == 0 )
- Result = y ;
- else if ( ( ( x <= ( 1073741823L - y ) / n ) && ( - (integer) x <= (
- 1073741823L + y ) / n ) ) )
- Result = n * x + y ;
- else {
-
- aritherror = true ;
- Result = 0 ;
- }
- return(Result) ;
- }
- scaled zxovern ( x , n )
- scaled x ;
- integer n ;
- {register scaled Result; xovern_regmem
- boolean negative ;
- negative = false ;
- if ( n == 0 )
- {
- aritherror = true ;
- Result = 0 ;
- remainder = x ;
- }
- else {
-
- if ( n < 0 )
- {
- x = - (integer) x ;
- n = - (integer) n ;
- negative = true ;
- }
- if ( x >= 0 )
- {
- Result = x / n ;
- remainder = x % n ;
- }
- else {
-
- Result = - (integer) ( ( - (integer) x ) / n ) ;
- remainder = - (integer) ( ( - (integer) x ) % n ) ;
- }
- }
- if ( negative )
- remainder = - (integer) remainder ;
- return(Result) ;
- }
- scaled zxnoverd ( x , n , d )
- scaled x ;
- integer n , d ;
- {register scaled Result; xnoverd_regmem
- boolean positive ;
- nonnegativeinteger t, u, v ;
- if ( x >= 0 )
- positive = true ;
- else {
-
- x = - (integer) x ;
- positive = false ;
- }
- t = ( x % 32768L ) * n ;
- u = ( x / 32768L ) * n + ( t / 32768L ) ;
- v = ( u % d ) * 32768L + ( t % 32768L ) ;
- if ( u / d >= 32768L )
- aritherror = true ;
- else u = 32768L * ( u / d ) + ( v / d ) ;
- if ( positive )
- {
- Result = u ;
- remainder = v % d ;
- }
- else {
-
- Result = - (integer) u ;
- remainder = - (integer) ( v % d ) ;
- }
- return(Result) ;
- }
- halfword zbadness ( t , s )
- scaled t , s ;
- {register halfword Result; badness_regmem
- integer r ;
- if ( t == 0 )
- Result = 0 ;
- else if ( s <= 0 )
- Result = 10000 ;
- else {
-
- if ( t <= 7230584L )
- r = ( t * 297 ) / s ;
- else if ( s >= 1663497L )
- r = t / ( s / 297 ) ;
- else r = t ;
- if ( r > 1290 )
- Result = 10000 ;
- else Result = ( r * r * r + 131072L ) / 262144L ;
- }
- return(Result) ;
- }
- #ifdef DEBUG
- zprintword ( w )
- memoryword w ;
- {printword_regmem
- printint ( w .cint ) ;
- printchar ( 32 ) ;
- printscaled ( w .cint ) ;
- printchar ( 32 ) ;
- printscaled ( round ( 65536L * w .gr ) ) ;
- println () ;
- printint ( w .hh .v.LH ) ;
- printchar ( 61 ) ;
- printint ( w .hh.b0 ) ;
- printchar ( 58 ) ;
- printint ( w .hh.b1 ) ;
- printchar ( 59 ) ;
- printint ( w .hh .v.RH ) ;
- printchar ( 32 ) ;
- printint ( w .qqqq .b0 ) ;
- printchar ( 58 ) ;
- printint ( w .qqqq .b1 ) ;
- printchar ( 58 ) ;
- printint ( w .qqqq .b2 ) ;
- printchar ( 58 ) ;
- printint ( w .qqqq .b3 ) ;
- }
- #endif /* DEBUG */
- zshowtokenlist ( p , q , l )
- integer p , q ;
- integer l ;
- {/* 10 */ showtokenlist_regmem
- integer m, c ;
- ASCIIcode matchchr ;
- ASCIIcode n ;
- matchchr = 35 ;
- n = 48 ;
- tally = 0 ;
- while ( ( p != 0 ) && ( tally < l ) ) {
-
- if ( p == q )
- {
- firstcount = tally ;
- trickcount = tally + 1 + errorline - halferrorline ;
- if ( trickcount < errorline )
- trickcount = errorline ;
- }
- if ( ( p < himemmin ) || ( p > memend ) )
- {
- printesc ( 178 ) ;
- return ;
- }
- if ( mem [ p ] .hh .v.LH >= 4096 )
- printcs ( mem [ p ] .hh .v.LH - 4096 ) ;
- else {
-
- m = mem [ p ] .hh .v.LH / 256 ;
- c = mem [ p ] .hh .v.LH % 256 ;
- if ( ( c > 127 ) )
- printesc ( 413 ) ;
- else switch ( m )
- {case 1 :
- case 2 :
- case 3 :
- case 4 :
- case 7 :
- case 8 :
- case 10 :
- case 11 :
- case 12 :
- print ( c ) ;
- break ;
- case 6 :
- {
- print ( c ) ;
- print ( c ) ;
- }
- break ;
- case 5 :
- {
- print ( matchchr ) ;
- if ( c <= 9 )
- printchar ( c + 48 ) ;
- else {
-
- printchar ( 33 ) ;
- return ;
- }
- }
- break ;
- case 13 :
- {
- matchchr = c ;
- print ( c ) ;
- incr ( n ) ;
- printchar ( n ) ;
- if ( n > 57 )
- return ;
- }
- break ;
- case 14 :
- print ( 414 ) ;
- break ;
- default:
- printesc ( 413 ) ;
- break ;
- }
- }
- p = mem [ p ] .hh .v.RH ;
- }
- if ( p != 0 )
- printesc ( 412 ) ;
- }
- runaway () {
- runaway_regmem
- halfword p ;
- if ( scannerstatus > 1 )
- {
- printnl ( 427 ) ;
- switch ( scannerstatus )
- {case 2 :
- {
- print ( 428 ) ;
- p = defref ;
- }
- break ;
- case 3 :
- {
- print ( 429 ) ;
- p = memtop - 3 ;
- }
- break ;
- case 4 :
- {
- print ( 430 ) ;
- p = memtop - 4 ;
- }
- break ;
- case 5 :
- {
- print ( 431 ) ;
- p = defref ;
- }
- break ;
- }
- printchar ( 63 ) ;
- println () ;
- showtokenlist ( mem [ p ] .hh .v.RH , 0 , errorline - 10 ) ;
- }
- }
- halfword getavail () {
- register halfword Result; getavail_regmem
- halfword p ;
- p = avail ;
- if ( p != 0 )
- avail = mem [ avail ] .hh .v.RH ;
- else if ( memend < memmax )
- {
- incr ( memend ) ;
- p = memend ;
- }
- else {
-
- decr ( himemmin ) ;
- p = himemmin ;
- if ( himemmin <= lomemmax )
- {
- runaway () ;
- overflow ( 169 , memmax + 1 - memmin ) ;
- }
- }
- mem [ p ] .hh .v.RH = 0 ;
- ;
- #ifdef STAT
- incr ( dynused ) ;
- #endif /* STAT */
- Result = p ;
- return(Result) ;
- }
- zflushlist ( p )
- halfword p ;
- {flushlist_regmem
- halfword q, r ;
- if ( p != 0 )
- {
- r = p ;
- do {
- q = r ;
- r = mem [ r ] .hh .v.RH ;
- ;
- #ifdef STAT
- decr ( dynused ) ;
- #endif /* STAT */
- } while ( ! ( r == 0 ) ) ;
- mem [ q ] .hh .v.RH = avail ;
- avail = p ;
- }
- }
- halfword zgetnode ( s )
- integer s ;
- {/* 40 10 20 */ register halfword Result; getnode_regmem
- halfword p ;
- halfword q ;
- integer r ;
- integer t ;
- lab20: p = rover ;
- do {
- q = p + mem [ p ] .hh .v.LH ;
- while ( ( mem [ q ] .hh .v.RH == 65535L ) ) {
-
- t = mem [ q + 1 ] .hh .v.RH ;
- if ( q == rover )
- rover = t ;
- mem [ t + 1 ] .hh .v.LH = mem [ q + 1 ] .hh .v.LH ;
- mem [ mem [ q + 1 ] .hh .v.LH + 1 ] .hh .v.RH = t ;
- q = q + mem [ q ] .hh .v.LH ;
- }
- r = q - s ;
- if ( r > toint ( p + 1 ) )
- {
- mem [ p ] .hh .v.LH = r - p ;
- rover = p ;
- goto lab40 ;
- }
- if ( r == p )
- if ( mem [ p + 1 ] .hh .v.RH != p )
- {
- rover = mem [ p + 1 ] .hh .v.RH ;
- t = mem [ p + 1 ] .hh .v.LH ;
- mem [ rover + 1 ] .hh .v.LH = t ;
- mem [ t + 1 ] .hh .v.RH = rover ;
- goto lab40 ;
- }
- mem [ p ] .hh .v.LH = q - p ;
- p = mem [ p + 1 ] .hh .v.RH ;
- } while ( ! ( p == rover ) ) ;
- if ( s == 1073741824L )
- {
- Result = 65535L ;
- return(Result) ;
- }
- if ( lomemmax + 2 < himemmin )
- if ( lomemmax + 2 <= 65535L )
- {
- if ( lomemmax + 1000 < himemmin )
- t = lomemmax + 1000 ;
- else t = ( lomemmax + himemmin + 2 ) / 2 ;
- p = mem [ rover + 1 ] .hh .v.LH ;
- q = lomemmax ;
- mem [ p + 1 ] .hh .v.RH = q ;
- mem [ rover + 1 ] .hh .v.LH = q ;
- if ( t > 65535L )
- t = 65535L ;
- mem [ q + 1 ] .hh .v.RH = rover ;
- mem [ q + 1 ] .hh .v.LH = p ;
- mem [ q ] .hh .v.RH = 65535L ;
- mem [ q ] .hh .v.LH = t - lomemmax ;
- lomemmax = t ;
- mem [ lomemmax ] .hh .v.RH = 0 ;
- mem [ lomemmax ] .hh .v.LH = 0 ;
- rover = q ;
- goto lab20 ;
- }
- overflow ( 169 , memmax + 1 - memmin ) ;
- lab40: mem [ r ] .hh .v.RH = 0 ;
- ;
- #ifdef STAT
- varused = varused + s ;
- #endif /* STAT */
- Result = r ;
- return(Result) ;
- }
- zfreenode ( p , s )
- halfword p ;
- halfword s ;
- {freenode_regmem
- halfword q ;
- mem [ p ] .hh .v.LH = s ;
- mem [ p ] .hh .v.RH = 65535L ;
- q = mem [ rover + 1 ] .hh .v.LH ;
- mem [ p + 1 ] .hh .v.LH = q ;
- mem [ p + 1 ] .hh .v.RH = rover ;
- mem [ rover + 1 ] .hh .v.LH = p ;
- mem [ q + 1 ] .hh .v.RH = p ;
- ;
- #ifdef STAT
- varused = varused - s ;
- #endif /* STAT */
- }
- halfword newnullbox () {
- register halfword Result; newnullbox_regmem
- halfword p ;
- p = getnode ( 7 ) ;
- mem [ p ] .hh.b0 = 0 ;
- mem [ p ] .hh.b1 = 0 ;
- mem [ p + 1 ] .cint = 0 ;
- mem [ p + 2 ] .cint = 0 ;
- mem [ p + 3 ] .cint = 0 ;
- mem [ p + 4 ] .cint = 0 ;
- mem [ p + 5 ] .hh .v.RH = 0 ;
- mem [ p + 5 ] .hh.b0 = 0 ;
- mem [ p + 5 ] .hh.b1 = 0 ;
- mem [ p + 6 ] .gr = 0.0 ;
- Result = p ;
- return(Result) ;
- }
- halfword newrule () {
- register halfword Result; newrule_regmem
- halfword p ;
- p = getnode ( 4 ) ;
- mem [ p ] .hh.b0 = 2 ;
- mem [ p ] .hh.b1 = 0 ;
- mem [ p + 1 ] .cint = -1073741824L ;
- mem [ p + 2 ] .cint = -1073741824L ;
- mem [ p + 3 ] .cint = -1073741824L ;
- Result = p ;
- return(Result) ;
- }
- halfword znewligature ( f , c , q )
- quarterword f , c ;
- halfword q ;
- {register halfword Result; newligature_regmem
- halfword p ;
- p = getnode ( 2 ) ;
- mem [ p ] .hh.b0 = 6 ;
- mem [ p ] .hh.b1 = 0 ;
- mem [ p + 1 ] .hh.b0 = f ;
- mem [ p + 1 ] .hh.b1 = c ;
- mem [ p + 1 ] .hh .v.RH = q ;
- Result = p ;
- return(Result) ;
- }
- halfword newdisc () {
- register halfword Result; newdisc_regmem
- halfword p ;
- p = getnode ( 2 ) ;
- mem [ p ] .hh.b0 = 7 ;
- mem [ p ] .hh.b1 = 0 ;
- mem [ p + 1 ] .hh .v.LH = 0 ;
- mem [ p + 1 ] .hh .v.RH = 0 ;
- Result = p ;
- return(Result) ;
- }
- halfword znewmath ( w , s )
- scaled w ;
- smallnumber s ;
- {register halfword Result; newmath_regmem
- halfword p ;
- p = getnode ( 2 ) ;
- mem [ p ] .hh.b0 = 9 ;
- mem [ p ] .hh.b1 = s ;
- mem [ p + 1 ] .cint = w ;
- Result = p ;
- return(Result) ;
- }
- halfword znewspec ( p )
- halfword p ;
- {register halfword Result; newspec_regmem
- halfword q ;
- q = getnode ( 4 ) ;
- mem [ q ] = mem [ p ] ;
- mem [ q ] .hh .v.RH = 0 ;
- mem [ q + 1 ] .cint = mem [ p + 1 ] .cint ;
- mem [ q + 2 ] .cint = mem [ p + 2 ] .cint ;
- mem [ q + 3 ] .cint = mem [ p + 3 ] .cint ;
- Result = q ;
- return(Result) ;
- }
- halfword znewparamglue ( n )
- smallnumber n ;
- {register halfword Result; newparamglue_regmem
- halfword p ;
- halfword q ;
- p = getnode ( 2 ) ;
- mem [ p ] .hh.b0 = 10 ;
- mem [ p ] .hh.b1 = n + 1 ;
- mem [ p + 1 ] .hh .v.RH = 0 ;
- q = eqtb [ 3526 + n ] .hh .v.RH ;
- mem [ p + 1 ] .hh .v.LH = q ;
- incr ( mem [ q ] .hh .v.RH ) ;
- Result = p ;
- return(Result) ;
- }
- halfword znewglue ( q )
- halfword q ;
- {register halfword Result; newglue_regmem
- halfword p ;
- p = getnode ( 2 ) ;
- mem [ p ] .hh.b0 = 10 ;
- mem [ p ] .hh.b1 = 0 ;
- mem [ p + 1 ] .hh .v.RH = 0 ;
- mem [ p + 1 ] .hh .v.LH = q ;
- incr ( mem [ q ] .hh .v.RH ) ;
- Result = p ;
- return(Result) ;
- }
- halfword znewskipparam ( n )
- smallnumber n ;
- {register halfword Result; newskipparam_regmem
- halfword p ;
- tempptr = newspec ( eqtb [ 3526 + n ] .hh .v.RH ) ;
- p = newglue ( tempptr ) ;
- mem [ tempptr ] .hh .v.RH = 0 ;
- mem [ p ] .hh.b1 = n + 1 ;
- Result = p ;
- return(Result) ;
- }
- halfword znewkern ( w )
- scaled w ;
- {register halfword Result; newkern_regmem
- halfword p ;
- p = getnode ( 2 ) ;
- mem [ p ] .hh.b0 = 11 ;
- mem [ p ] .hh.b1 = 0 ;
- mem [ p + 1 ] .cint = w ;
- Result = p ;
- return(Result) ;
- }
- halfword znewpenalty ( m )
- integer m ;
- {register halfword Result; newpenalty_regmem
- halfword p ;
- p = getnode ( 2 ) ;
- mem [ p ] .hh.b0 = 12 ;
- mem [ p ] .hh.b1 = 0 ;
- mem [ p + 1 ] .cint = m ;
- Result = p ;
- return(Result) ;
- }
- #ifdef DEBUG
- zcheckmem ( printlocs )
- boolean printlocs ;
- {/* 31 32 */ checkmem_regmem
- halfword p, q ;
- boolean clobbered ;
- {register integer for_end; p = memmin ; for_end = lomemmax ; if ( p <=
- for_end) do
- freearr [ p ] = false ;
- while ( p++ < for_end ) ; }
- {register integer for_end; p = himemmin ; for_end = memend ; if ( p <=
- for_end) do
- freearr [ p ] = false ;
- while ( p++ < for_end ) ; }
- p = avail ;
- q = 0 ;
- clobbered = false ;
- while ( p != 0 ) {
-
- if ( ( p > memend ) || ( p < himemmin ) )
- clobbered = true ;
- else if ( freearr [ p ] )
- clobbered = true ;
- if ( clobbered )
- {
- printnl ( 170 ) ;
- printint ( q ) ;
- goto lab31 ;
- }
- freearr [ p ] = true ;
- q = p ;
- p = mem [ q ] .hh .v.RH ;
- }
- lab31: ;
- p = rover ;
- q = 0 ;
- clobbered = false ;
- do {
- if ( ( p >= lomemmax ) || ( p < memmin ) )
- clobbered = true ;
- else if ( ( mem [ p + 1 ] .hh .v.RH >= lomemmax ) || ( mem [ p + 1 ] .hh
- .v.RH < memmin ) )
- clobbered = true ;
- else if ( ! ( ( mem [ p ] .hh .v.RH == 65535L ) ) || ( mem [ p ] .hh .v.LH
- < 2 ) || ( p + mem [ p ] .hh .v.LH > lomemmax ) || ( mem [ mem [ p + 1 ]
- .hh .v.RH + 1 ] .hh .v.LH != p ) )
- clobbered = true ;
- if ( clobbered )
- {
- printnl ( 171 ) ;
- printint ( q ) ;
- goto lab32 ;
- }
- {register integer for_end; q = p ; for_end = p + mem [ p ] .hh .v.LH - 1
- ; if ( q <= for_end) do
- {
- if ( freearr [ q ] )
- {
- printnl ( 172 ) ;
- printint ( q ) ;
- goto lab32 ;
- }
- freearr [ q ] = true ;
- }
- while ( q++ < for_end ) ; }
- q = p ;
- p = mem [ p + 1 ] .hh .v.RH ;
- } while ( ! ( p == rover ) ) ;
- lab32: ;
- p = memmin ;
- while ( p <= lomemmax ) {
-
- if ( ( mem [ p ] .hh .v.RH == 65535L ) )
- {
- printnl ( 173 ) ;
- printint ( p ) ;
- }
- while ( ( p <= lomemmax ) && ! freearr [ p ] ) incr ( p ) ;
- while ( ( p <= lomemmax ) && freearr [ p ] ) incr ( p ) ;
- }
- if ( printlocs )
- {
- printnl ( 174 ) ;
- {register integer for_end; p = memmin ; for_end = lomemmax ; if ( p <=
- for_end) do
- if ( ! freearr [ p ] && ( ( p > waslomax ) || wasfree [ p ] ) )
- {
- printchar ( 32 ) ;
- printint ( p ) ;
- }
- while ( p++ < for_end ) ; }
- {register integer for_end; p = himemmin ; for_end = memend ; if ( p <=
- for_end) do
- if ( ! freearr [ p ] && ( ( p < washimin ) || ( p > wasmemend ) ||
- wasfree [ p ] ) )
- {
- printchar ( 32 ) ;
- printint ( p ) ;
- }
- while ( p++ < for_end ) ; }
- }
- {register integer for_end; p = memmin ; for_end = lomemmax ; if ( p <=
- for_end) do
- wasfree [ p ] = freearr [ p ] ;
- while ( p++ < for_end ) ; }
- {register integer for_end; p = himemmin ; for_end = memend ; if ( p <=
- for_end) do
- wasfree [ p ] = freearr [ p ] ;
- while ( p++ < for_end ) ; }
- wasmemend = memend ;
- waslomax = lomemmax ;
- washimin = himemmin ;
- }
- #endif /* DEBUG */
- #ifdef DEBUG
- zsearchmem ( p )
- halfword p ;
- {searchmem_regmem
- integer q ;
- {register integer for_end; q = memmin ; for_end = lomemmax ; if ( q <=
- for_end) do
- {
- if ( mem [ q ] .hh .v.RH == p )
- {
- printnl ( 175 ) ;
- printint ( q ) ;
- printchar ( 41 ) ;
- }
- if ( mem [ q ] .hh .v.LH == p )
- {
- printnl ( 176 ) ;
- printint ( q ) ;
- printchar ( 41 ) ;
- }
- }
- while ( q++ < for_end ) ; }
- {register integer for_end; q = himemmin ; for_end = memend ; if ( q <=
- for_end) do
- {
- if ( mem [ q ] .hh .v.RH == p )
- {
- printnl ( 175 ) ;
- printint ( q ) ;
- printchar ( 41 ) ;
- }
- if ( mem [ q ] .hh .v.LH == p )
- {
- printnl ( 176 ) ;
- printint ( q ) ;
- printchar ( 41 ) ;
- }
- }
- while ( q++ < for_end ) ; }
- {register integer for_end; q = 1 ; for_end = 4577 ; if ( q <= for_end) do
- {
- if ( eqtb [ q ] .hh .v.RH == p )
- {
- printnl ( 360 ) ;
- printint ( q ) ;
- printchar ( 41 ) ;
- }
- }
- while ( q++ < for_end ) ; }
- if ( saveptr > 0 )
- {register integer for_end; q = 0 ; for_end = saveptr - 1 ; if ( q <=
- for_end) do
- {
- if ( savestack [ q ] .hh .v.RH == p )
- {
- printnl ( 404 ) ;
- printint ( q ) ;
- printchar ( 41 ) ;
- }
- }
- while ( q++ < for_end ) ; }
- {register integer for_end; q = 0 ; for_end = 307 ; if ( q <= for_end) do
- {
- if ( hyphlist [ q ] == p )
- {
- printnl ( 792 ) ;
- printint ( q ) ;
- printchar ( 41 ) ;
- }
- }
- while ( q++ < for_end ) ; }
- }
- #endif /* DEBUG */
- zshortdisplay ( p )
- integer p ;
- {shortdisplay_regmem
- integer n ;
- while ( p > memmin ) {
-
- if ( ( p >= himemmin ) )
- {
- if ( p <= memend )
- {
- if ( mem [ p ] .hh.b0 != fontinshortdisplay )
- {
- if ( ( mem [ p ] .hh.b0 > fontmax ) )
- printchar ( 42 ) ;
- else printesc ( hash [ 3268 + mem [ p ] .hh.b0 ] .v.RH ) ;
- printchar ( 32 ) ;
- fontinshortdisplay = mem [ p ] .hh.b0 ;
- }
- printASCII ( mem [ p ] .hh.b1 ) ;
- }
- }
- else switch ( mem [ p ] .hh.b0 )
- {case 0 :
- case 1 :
- case 3 :
- case 8 :
- case 4 :
- case 5 :
- case 13 :
- print ( 177 ) ;
- break ;
- case 2 :
- printchar ( 124 ) ;
- break ;
- case 10 :
- if ( mem [ p + 1 ] .hh .v.LH != 0 )
- printchar ( 32 ) ;
- break ;
- case 9 :
- printchar ( 36 ) ;
- break ;
- case 6 :
- shortdisplay ( mem [ p + 1 ] .hh .v.RH ) ;
- break ;
- case 7 :
- {
- shortdisplay ( mem [ p + 1 ] .hh .v.LH ) ;
- shortdisplay ( mem [ p + 1 ] .hh .v.RH ) ;
- n = mem [ p ] .hh.b1 ;
- while ( n > 0 ) {
-
- if ( mem [ p ] .hh .v.RH != 0 )
- p = mem [ p ] .hh .v.RH ;
- decr ( n ) ;
- }
- }
- break ;
- default:
- ;
- break ;
- }
- p = mem [ p ] .hh .v.RH ;
- }
- }
- zprintfontandchar ( p )
- integer p ;
- {printfontandchar_regmem
- if ( p > memend )
- printesc ( 178 ) ;
- else {
-
- if ( ( mem [ p ] .hh.b0 > fontmax ) )
- printchar ( 42 ) ;
- else printesc ( hash [ 3268 + mem [ p ] .hh.b0 ] .v.RH ) ;
- printchar ( 32 ) ;
- printASCII ( mem [ p ] .hh.b1 ) ;
- }
- }
- zprintmark ( p )
- integer p ;
- {printmark_regmem
- printchar ( 123 ) ;
- if ( ( p < himemmin ) || ( p > memend ) )
- printesc ( 178 ) ;
- else showtokenlist ( mem [ p ] .hh .v.RH , 0 , maxprintline - 10 ) ;
- printchar ( 125 ) ;
- }
- zprintruledimen ( d )
- scaled d ;
- {printruledimen_regmem
- if ( ( d == -1073741824L ) )
- printchar ( 42 ) ;
- else printscaled ( d ) ;
- }
- zprintglue ( d , order , s )
- scaled d ;
- integer order ;
- strnumber s ;
- {printglue_regmem
- printscaled ( d ) ;
- if ( ( order < 0 ) || ( order > 3 ) )
- print ( 179 ) ;
- else if ( order > 0 )
- {
- print ( 180 ) ;
- while ( order > 1 ) {
-
- printchar ( 108 ) ;
- decr ( order ) ;
- }
- }
- else if ( s != 0 )
- print ( s ) ;
- }
- zprintspec ( p , s )
- integer p ;
- strnumber s ;
- {printspec_regmem
- if ( ( p < memmin ) || ( p >= lomemmax ) )
- printchar ( 42 ) ;
- else {
-
- printscaled ( mem [ p + 1 ] .cint ) ;
- if ( s != 0 )
- print ( s ) ;
- if ( mem [ p + 2 ] .cint != 0 )
- {
- print ( 181 ) ;
- printglue ( mem [ p + 2 ] .cint , mem [ p ] .hh.b0 , s ) ;
- }
- if ( mem [ p + 3 ] .cint != 0 )
- {
- print ( 182 ) ;
- printglue ( mem [ p + 3 ] .cint , mem [ p ] .hh.b1 , s ) ;
- }
- }
- }
- zprintfamandchar ( p )
- halfword p ;
- {printfamandchar_regmem
- printesc ( 329 ) ;
- printint ( mem [ p ] .hh.b0 ) ;
- printchar ( 32 ) ;
- printASCII ( mem [ p ] .hh.b1 ) ;
- }
- zprintdelimiter ( p )
- halfword p ;
- {printdelimiter_regmem
- integer a ;
- a = mem [ p ] .qqqq .b0 * 256 + mem [ p ] .qqqq .b1 ;
- a = a * 4096 + mem [ p ] .qqqq .b2 * 256 + mem [ p ] .qqqq .b3 ;
- if ( a < 0 )
- printint ( a ) ;
- else printhex ( a ) ;
- }
- zprintsubsidiarydata ( p , c )
- halfword p ;
- ASCIIcode c ;
- {printsubsidiarydata_regmem
- if ( ( poolptr - strstart [ strptr ] ) >= depththreshold )
- {
- if ( mem [ p ] .hh .v.RH != 0 )
- print ( 183 ) ;
- }
- else {
-
- {
- strpool [ poolptr ] = c ;
- incr ( poolptr ) ;
- }
- tempptr = p ;
- switch ( mem [ p ] .hh .v.RH )
- {case 1 :
- {
- println () ;
- printcurrentstring () ;
- printfamandchar ( p ) ;
- }
- break ;
- case 2 :
- showinfo () ;
- break ;
- case 3 :
- if ( mem [ p ] .hh .v.LH == 0 )
- {
- println () ;
- printcurrentstring () ;
- print ( 713 ) ;
- }
- else showinfo () ;
- break ;
- default:
- ;
- break ;
- }
- decr ( poolptr ) ;
- }
- }
- zprintstyle ( c )
- integer c ;
- {printstyle_regmem
- switch ( c / 2 )
- {case 0 :
- printesc ( 714 ) ;
- break ;
- case 1 :
- printesc ( 715 ) ;
- break ;
- case 2 :
- printesc ( 716 ) ;
- break ;
- case 3 :
- printesc ( 717 ) ;
- break ;
- default:
- print ( 718 ) ;
- break ;
- }
- }
- zprintskipparam ( n )
- integer n ;
- {printskipparam_regmem
- switch ( n )
- {case 0 :
- printesc ( 241 ) ;
- break ;
- case 1 :
- printesc ( 242 ) ;
- break ;
- case 2 :
- printesc ( 243 ) ;
- break ;
- case 3 :
- printesc ( 244 ) ;
- break ;
- case 4 :
- printesc ( 245 ) ;
- break ;
- case 5 :
- printesc ( 246 ) ;
- break ;
- case 6 :
- printesc ( 247 ) ;
- break ;
- case 7 :
- printesc ( 248 ) ;
- break ;
- case 8 :
- printesc ( 249 ) ;
- break ;
- case 9 :
- printesc ( 250 ) ;
- break ;
- case 10 :
- printesc ( 251 ) ;
- break ;
- case 11 :
- printesc ( 252 ) ;
- break ;
- case 12 :
- printesc ( 253 ) ;
- break ;
- case 13 :
- printesc ( 254 ) ;
- break ;
- case 14 :
- printesc ( 255 ) ;
- break ;
- case 15 :
- printesc ( 256 ) ;
- break ;
- case 16 :
- printesc ( 257 ) ;
- break ;
- case 17 :
- printesc ( 258 ) ;
- break ;
- default:
- print ( 259 ) ;
- break ;
- }
- }
- zshownodelist ( p )
- integer p ;
- {/* 10 */ shownodelist_regmem
- integer n ;
- real g ;
- if ( ( poolptr - strstart [ strptr ] ) > depththreshold )
- {
- if ( p > 0 )
- print ( 183 ) ;
- return ;
- }
- n = 0 ;
- while ( p > memmin ) {
-
- println () ;
- printcurrentstring () ;
- if ( p > memend )
- {
- print ( 184 ) ;
- return ;
- }
- incr ( n ) ;
- if ( n > breadthmax )
- {
- print ( 185 ) ;
- return ;
- }
- if ( ( p >= himemmin ) )
- printfontandchar ( p ) ;
- else switch ( mem [ p ] .hh.b0 )
- {case 0 :
- case 1 :
- case 13 :
- {
- if ( mem [ p ] .hh.b0 == 0 )
- printesc ( 104 ) ;
- else if ( mem [ p ] .hh.b0 == 1 )
- printesc ( 118 ) ;
- else printesc ( 187 ) ;
- print ( 188 ) ;
- printscaled ( mem [ p + 3 ] .cint ) ;
- printchar ( 43 ) ;
- printscaled ( mem [ p + 2 ] .cint ) ;
- print ( 189 ) ;
- printscaled ( mem [ p + 1 ] .cint ) ;
- if ( mem [ p ] .hh.b0 == 13 )
- {
- if ( mem [ p ] .hh.b1 != 0 )
- {
- print ( 155 ) ;
- printint ( mem [ p ] .hh.b1 + 1 ) ;
- print ( 191 ) ;
- }
- if ( mem [ p + 6 ] .cint != 0 )
- {
- print ( 192 ) ;
- printglue ( mem [ p + 6 ] .cint , mem [ p + 5 ] .hh.b1 , 0 ) ;
- }
- if ( mem [ p + 4 ] .cint != 0 )
- {
- print ( 193 ) ;
- printglue ( mem [ p + 4 ] .cint , mem [ p + 5 ] .hh.b0 , 0 ) ;
- }
- }
- else {
-
- g = mem [ p + 6 ] .gr ;
- if ( ( g != 0.0 ) && ( mem [ p + 5 ] .hh.b0 != 0 ) )
- {
- print ( 194 ) ;
- if ( mem [ p + 5 ] .hh.b0 == 2 )
- print ( 195 ) ;
- if ( fabs ( g ) > 20000.0 )
- {
- if ( g > 0.0 )
- printchar ( 62 ) ;
- else print ( 196 ) ;
- printglue ( 20000 * 65536L , mem [ p + 5 ] .hh.b1 , 0 ) ;
- }
- else printglue ( round ( 65536L * g ) , mem [ p + 5 ] .hh.b1 , 0 )
- ;
- }
- if ( mem [ p + 4 ] .cint != 0 )
- {
- print ( 190 ) ;
- printscaled ( mem [ p + 4 ] .cint ) ;
- }
- }
- {
- {
- strpool [ poolptr ] = 46 ;
- incr ( poolptr ) ;
- }
- shownodelist ( mem [ p + 5 ] .hh .v.RH ) ;
- decr ( poolptr ) ;
- }
- }
- break ;
- case 2 :
- {
- printesc ( 197 ) ;
- printruledimen ( mem [ p + 3 ] .cint ) ;
- printchar ( 43 ) ;
- printruledimen ( mem [ p + 2 ] .cint ) ;
- print ( 189 ) ;
- printruledimen ( mem [ p + 1 ] .cint ) ;
- }
- break ;
- case 3 :
- {
- printesc ( 198 ) ;
- printint ( mem [ p ] .hh.b1 ) ;
- print ( 199 ) ;
- printscaled ( mem [ p + 3 ] .cint ) ;
- print ( 200 ) ;
- printspec ( mem [ p + 4 ] .hh .v.RH , 0 ) ;
- printchar ( 44 ) ;
- printscaled ( mem [ p + 2 ] .cint ) ;
- print ( 201 ) ;
- printint ( mem [ p + 1 ] .cint ) ;
- {
- {
- strpool [ poolptr ] = 46 ;
- incr ( poolptr ) ;
- }
- shownodelist ( mem [ p + 4 ] .hh .v.LH ) ;
- decr ( poolptr ) ;
- }
- }
- break ;
- case 8 :
- switch ( mem [ p ] .hh.b1 )
- {case 0 :
- {
- printwritewhatsit ( 1129 , p ) ;
- printchar ( 61 ) ;
- printfilename ( mem [ p + 1 ] .hh .v.RH , mem [ p + 2 ] .hh .v.LH ,
- mem [ p + 2 ] .hh .v.RH ) ;
- }
- break ;
- case 1 :
- {
- printwritewhatsit ( 452 , p ) ;
- printmark ( mem [ p + 1 ] .hh .v.RH ) ;
- }
- break ;
- case 2 :
- printwritewhatsit ( 1130 , p ) ;
- break ;
- case 3 :
- {
- printesc ( 1131 ) ;
- printmark ( mem [ p + 1 ] .hh .v.RH ) ;
- }
- break ;
- default:
- print ( 1135 ) ;
- break ;
- }
- break ;
- case 10 :
- if ( mem [ p ] .hh.b1 >= 100 )
- {
- printesc ( 206 ) ;
- if ( mem [ p ] .hh.b1 == 101 )
- printchar ( 99 ) ;
- else if ( mem [ p ] .hh.b1 == 102 )
- printchar ( 120 ) ;
- print ( 207 ) ;
- printspec ( mem [ p + 1 ] .hh .v.LH , 0 ) ;
- {
- {
- strpool [ poolptr ] = 46 ;
- incr ( poolptr ) ;
- }
- shownodelist ( mem [ p + 1 ] .hh .v.RH ) ;
- decr ( poolptr ) ;
- }
- }
- else {
-
- printesc ( 202 ) ;
- if ( mem [ p ] .hh.b1 != 0 )
- {
- printchar ( 40 ) ;
- if ( mem [ p ] .hh.b1 < 98 )
- printskipparam ( mem [ p ] .hh.b1 - 1 ) ;
- else if ( mem [ p ] .hh.b1 == 98 )
- printesc ( 203 ) ;
- else printesc ( 204 ) ;
- printchar ( 41 ) ;
- }
- if ( mem [ p ] .hh.b1 != 98 )
- {
- printchar ( 32 ) ;
- if ( mem [ p ] .hh.b1 < 98 )
- printspec ( mem [ p + 1 ] .hh .v.LH , 0 ) ;
- else printspec ( mem [ p + 1 ] .hh .v.LH , 205 ) ;
- }
- }
- break ;
- case 11 :
- if ( mem [ p ] .hh.b1 != 99 )
- {
- printesc ( 208 ) ;
- if ( mem [ p ] .hh.b1 != 0 )
- printchar ( 32 ) ;
- printscaled ( mem [ p + 1 ] .cint ) ;
- if ( mem [ p ] .hh.b1 == 2 )
- print ( 209 ) ;
- }
- else {
-
- printesc ( 210 ) ;
- printscaled ( mem [ p + 1 ] .cint ) ;
- print ( 205 ) ;
- }
- break ;
- case 9 :
- {
- printesc ( 211 ) ;
- if ( mem [ p ] .hh.b1 == 0 )
- print ( 212 ) ;
- else print ( 213 ) ;
- if ( mem [ p + 1 ] .cint != 0 )
- {
- print ( 214 ) ;
- printscaled ( mem [ p + 1 ] .cint ) ;
- }
- }
- break ;
- case 6 :
- {
- printfontandchar ( p + 1 ) ;
- print ( 215 ) ;
- fontinshortdisplay = mem [ p + 1 ] .hh.b0 ;
- shortdisplay ( mem [ p + 1 ] .hh .v.RH ) ;
- printchar ( 41 ) ;
- }
- break ;
- case 12 :
- {
- printesc ( 216 ) ;
- printint ( mem [ p + 1 ] .cint ) ;
- }
- break ;
- case 7 :
- {
- printesc ( 217 ) ;
- if ( mem [ p ] .hh.b1 > 0 )
- {
- print ( 218 ) ;
- printint ( mem [ p ] .hh.b1 ) ;
- }
- {
- {
- strpool [ poolptr ] = 46 ;
- incr ( poolptr ) ;
- }
- shownodelist ( mem [ p + 1 ] .hh .v.LH ) ;
- decr ( poolptr ) ;
- }
- {
- strpool [ poolptr ] = 124 ;
- incr ( poolptr ) ;
- }
- shownodelist ( mem [ p + 1 ] .hh .v.RH ) ;
- decr ( poolptr ) ;
- }
- break ;
- case 4 :
- {
- printesc ( 219 ) ;
- printmark ( mem [ p + 1 ] .cint ) ;
- }
- break ;
- case 5 :
- {
- printesc ( 220 ) ;
- {
- {
- strpool [ poolptr ] = 46 ;
- incr ( poolptr ) ;
- }
- shownodelist ( mem [ p + 1 ] .cint ) ;
- decr ( poolptr ) ;
- }
- }
- break ;
- case 14 :
- printstyle ( mem [ p ] .hh.b1 ) ;
- break ;
- case 15 :
- {
- printesc ( 384 ) ;
- {
- strpool [ poolptr ] = 68 ;
- incr ( poolptr ) ;
- }
- shownodelist ( mem [ p + 1 ] .hh .v.LH ) ;
- decr ( poolptr ) ;
- {
- strpool [ poolptr ] = 84 ;
- incr ( poolptr ) ;
- }
- shownodelist ( mem [ p + 1 ] .hh .v.RH ) ;
- decr ( poolptr ) ;
- {
- strpool [ poolptr ] = 83 ;
- incr ( poolptr ) ;
- }
- shownodelist ( mem [ p + 2 ] .hh .v.LH ) ;
- decr ( poolptr ) ;
- {
- strpool [ poolptr ] = 115 ;
- incr ( poolptr ) ;
- }
- shownodelist ( mem [ p + 2 ] .hh .v.RH ) ;
- decr ( poolptr ) ;
- }
- break ;
- case 16 :
- case 17 :
- case 18 :
- case 19 :
- case 20 :
- case 21 :
- case 22 :
- case 23 :
- case 24 :
- case 27 :
- case 26 :
- case 29 :
- case 28 :
- case 30 :
- case 31 :
- {
- switch ( mem [ p ] .hh.b0 )
- {case 16 :
- printesc ( 719 ) ;
- break ;
- case 17 :
- printesc ( 720 ) ;
- break ;
- case 18 :
- printesc ( 721 ) ;
- break ;
- case 19 :
- printesc ( 722 ) ;
- break ;
- case 20 :
- printesc ( 723 ) ;
- break ;
- case 21 :
- printesc ( 724 ) ;
- break ;
- case 22 :
- printesc ( 725 ) ;
- break ;
- case 23 :
- printesc ( 726 ) ;
- break ;
- case 27 :
- printesc ( 727 ) ;
- break ;
- case 26 :
- printesc ( 728 ) ;
- break ;
- case 29 :
- printesc ( 397 ) ;
- break ;
- case 24 :
- {
- printesc ( 391 ) ;
- printdelimiter ( p + 4 ) ;
- }
- break ;
- case 28 :
- {
- printesc ( 367 ) ;
- printfamandchar ( p + 4 ) ;
- }
- break ;
- case 30 :
- {
- printesc ( 729 ) ;
- printdelimiter ( p + 1 ) ;
- }
- break ;
- case 31 :
- {
- printesc ( 730 ) ;
- printdelimiter ( p + 1 ) ;
- }
- break ;
- }
- if ( mem [ p ] .hh.b1 != 0 )
- if ( mem [ p ] .hh.b1 == 1 )
- printesc ( 731 ) ;
- else printesc ( 732 ) ;
- if ( mem [ p ] .hh.b0 < 30 )
- printsubsidiarydata ( p + 1 , 46 ) ;
- printsubsidiarydata ( p + 2 , 94 ) ;
- printsubsidiarydata ( p + 3 , 95 ) ;
- }
- break ;
- case 25 :
- {
- printesc ( 733 ) ;
- if ( mem [ p + 1 ] .cint == 1073741824L )
- print ( 734 ) ;
- else printscaled ( mem [ p + 1 ] .cint ) ;
- if ( ( mem [ p + 4 ] .qqqq .b0 != 0 ) || ( mem [ p + 4 ] .qqqq .b1 !=
- 0 ) || ( mem [ p + 4 ] .qqqq .b2 != 0 ) || ( mem [ p + 4 ] .qqqq .b3
- != 0 ) )
- {
- print ( 735 ) ;
- printdelimiter ( p + 4 ) ;
- }
- if ( ( mem [ p + 5 ] .qqqq .b0 != 0 ) || ( mem [ p + 5 ] .qqqq .b1 !=
- 0 ) || ( mem [ p + 5 ] .qqqq .b2 != 0 ) || ( mem [ p + 5 ] .qqqq .b3
- != 0 ) )
- {
- print ( 736 ) ;
- printdelimiter ( p + 5 ) ;
- }
- printsubsidiarydata ( p + 2 , 92 ) ;
- printsubsidiarydata ( p + 3 , 47 ) ;
- }
- break ;
- default:
- print ( 186 ) ;
- break ;
- }
- p = mem [ p ] .hh .v.RH ;
- }
- }
-